#include "glr.h"
#include <QDebug>
#include <QString>
#include <QLabel>

GLR::GLR(QString pPath, Ui::MainWindow *p_ui, QString *version) : QTreeWidgetItem()
{
    projectPath = pPath;
    b_hasIcon = false;
    maxDiff = 5;
    totalFiles = 0;
    translated = 0;
    tree = new Folder(NULL, ".", p_ui);

    this->version = version;

    ui = p_ui;

    type = "GLR";

    isChanged = false;
}

bool GLR::loadInfo()
{
    qDebug() << "-------------------------------";
    qDebug() << "GLR::loadInfo(): Нахожусь в папке " << QDir::currentPath() << " и ищу файл info.dat";
    QFile *infoFile = new QFile("info.dat");

    if( !infoFile->open(QIODevice::ReadOnly))
    {
        qDebug() << "GLR::loadInfo(): ... но найти немогу :)";
        QMessageBox::information(new QWidget(), "Ошибка",
                                 QString("Невозможно открыть файл %1").arg(infoFile->fileName()), QMessageBox::Ok);
        return false;
    }

    QString tempString;
    QString variableName;
    QString value;

    while( true)
    {
        tempString = infoFile->readLine();  // Получение строки из файла
        tempString = tempString.trimmed();  // Удаление лишних пробелов

        if(tempString.isEmpty())
            continue;

        variableName = "";
        value = "";
         Revoice::setVarNValue(tempString, variableName, value);  // Из tempString получает имя переменной и значение


        if( variableName == "projectName")
        {
            projectName = value;
            setText(0, projectName);
        }
        else
        if( variableName == "hasIcon")
        {
            b_hasIcon = (bool) value.toInt();
            if( b_hasIcon)
            {
                if( QFile::exists("icon.png"))
                    setIcon(0, QIcon("icon.png"));
                if( QFile::exists("icon.jpg"))
                    setIcon(0, QIcon("icon.jpg"));
                if( QFile::exists("icon.bmp"))
                    setIcon(0, QIcon("icon.bmp"));
            }
        }
        else
        if( variableName == "totalFiles")
            totalFiles = value.toInt();
        else
        if( variableName == "translated")
            translated = value.toInt();
        else
        if( variableName == "maxDifference")
            maxDiff = value.toInt();
        else
        if( variableName == "version")
        {
            if( value.trimmed() != version->trimmed())
            {
                QMessageBox::information(new QWidget, "Внимание",
                             "Версия используемой вами программы " + *version + ", а данный файл GLR создан в GameLOC версии " + value +
                             ". Файл всё равно будет загружен, но нет гарантии что программа сможет с ним работать правильно. " +
                             "На всякий случай сделайте копию данного файла GLR или после загрузки сохраните его отдельно" +
                             "дабы не повредить его\nОбратитесь к разработчику программы за пояснениями. Это можно сделать из меню \"Справка\"");
            }
        }
        else
        if( variableName == "[Folder]")
        {
            tree = new Folder(NULL, QDir::currentPath(), ui);
            if( tree->loadInfo(infoFile))
                addChild(tree);
            else
            {
                infoFile->close();
                delete infoFile;
                return false;
            }

        } else
        if( variableName == "[end]")
        {
            int res = 0;

            for( int i = 0; i < tree->getFoldersCount(); i++)
                res += tree->getFolders().at(i)->getFilesCount();

            QMessageBox::information(new QWidget, "???", QObject::tr("Загружено %1. В info.dat сказано %2").arg(res).arg(totalFiles));

            infoFile->close();
            delete infoFile;
            return true;
        }
        else
        {
            QMessageBox::warning(new QWidget(), "Ошибка", QString("Обнаружена неизвестная переменная %1 при загрузке. Класс: GLR, функция: loadInfo()").arg(variableName),
                                 QMessageBox::Ok);

            infoFile->close();
            delete infoFile;
            return false;
        }
    }
}

void GLR::glrIsChanged()
{
    setText(0, projectName + " *");
    isChanged = true;
}

void GLR::glrIsSaved()
{
    setText(0, projectName);
    isChanged = false;
}
